#ifndef __KEYLED_H
#define __KEYLED_H

#include "main.h" //在main.h中定义了Keys、LEDs和Buzzer引脚的宏

// 表示四个按键的枚举类型
typedef enum {
	KEY_NONE=0,
	KEY_LEFT,
	KEY_RIGHT,
	KEY_UP,
	KEY_DOWN
}KEYS;

#define KEY_WAIT_ALWAYS 0 // 作为函数scanPrecess 的一种参数，表示一值等待按键输入

KEYS ScanPressedKey(uint32_t timeout);

#ifdef LED1_Pin
	#define LED1_Toggle() HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin)
	#define LED1_ON() HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET)
	#define LED1_OFF() HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET)
#endif

#ifdef LED2_Pin
	#define LED2_Toggle() HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin)
	#define LED2_ON() HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET)
	#define LED2_OFF() HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET)
#endif

#ifdef Buzzer_Pin
	#define Buzzer_Toggle() HAL_GPIO_TogglePin(Buzzer_GPIO_Port,Buzzer_Pin)
	#define Buzzer_ON() HAL_GPIO_WritePin(Buzzer_GPIO_Port,Buzzer_Pin,GPIO_PIN_RESET)
	#define Buzzer_OFF() HAL_GPIO_WritePin(Buzzer_GPIO_Port,Buzzer_Pin,GPIO_PIN_SET)
#endif


void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);


#endif
